var MongoClient = require('mongodb').MongoClient;
var Url = "mongodb://localhost:27017/";

//模型构造函数
function User(user) {
    this.name=user.name;
    this.password=user.password;
}

module.exports=User;


//保存用户信息
User.prototype.save=function(callback){
    var user={
        name:this.name,
        password:this.password
    };
    //打开数据库连接
    MongoClient.connect(Url,{useUnifiedTopology: true},function(err,client){
        if(err){
            return callback(err);
        };
        db=client.db("Users");
        db.collection("users1").createIndex({name:1},{unique:true });//唯一索引
        db.collection("users1").insertOne(user,function (err) {
            callback(err);
            client.close();
        });

    });
};

//查询函数,回调用来控制条件

User.get=function(username,callback){
    MongoClient.connect(Url,{useUnifiedTopology: true},function(err,client){
        if(err){
            return callback(err,user);
        };   
        db=client.db("Users");
        db.collection("users1").findOne({name:username},function(err,doc){
            if(err){
                client.close();
                return callback(err,user);
            };
            if(doc){
                var user=new User(doc);//把需要的信息封装成用户模型
                callback(err,user);//用户名重复回调
            }
            else(
                callback(err,user)//没重复无错误
            );
            client.close();

        });
    });
};


//测试save,唯一索引可用，通过
// var utest=new User({name:"hello3",password:"11111"});
// utest.save(function(err) {
//     if(err){
//         console.log("保存失败");
//         return;
//     };
//     console.log("保存成功");
    
//  });
//test get
// User.get("zhang",function(err,doc){
//     if(err){
//         console.log("查询失败")
//     };
//     console.log("成功");
// });

